package com.ruoyi.user.service;

import java.util.List;
import com.ruoyi.user.domain.UserAddresses;

/**
 * 用户收货地址Service接口
 * 
 * @author ruoyi
 * @date 2025-10-21
 */
public interface IUserAddressesService 
{
    /**
     * 查询用户收货地址
     * 
     * @param addressId 用户收货地址主键
     * @return 用户收货地址
     */
    public UserAddresses selectUserAddressesByAddressId(String addressId);

    /**
     * 查询用户收货地址列表
     * 
     * @param userAddresses 用户收货地址
     * @return 用户收货地址集合
     */
    public List<UserAddresses> selectUserAddressesList(UserAddresses userAddresses);

    /**
     * 新增用户收货地址
     * 
     * @param userAddresses 用户收货地址
     * @return 结果
     */
    public int insertUserAddresses(UserAddresses userAddresses);

    /**
     * 修改用户收货地址
     * 
     * @param userAddresses 用户收货地址
     * @return 结果
     */
    public int updateUserAddresses(UserAddresses userAddresses);

    /**
     * 批量删除用户收货地址
     * 
     * @param addressIds 需要删除的用户收货地址主键集合
     * @return 结果
     */
    public int deleteUserAddressesByAddressIds(String[] addressIds);

    /**
     * 删除用户收货地址信息
     * 
     * @param addressId 用户收货地址主键
     * @return 结果
     */
    public int deleteUserAddressesByAddressId(String addressId);

    /**
     * 根据用户ID查询用户收货地址列表
     * 
     * @param customerId 用户ID
     * @return 用户收货地址集合
     */
    public List<UserAddresses> selectUserAddressesByCustomerId(String customerId);

    /**
     * 根据用户ID和地址ID修改用户收货地址
     * 
     * @param userAddresses 用户收货地址
     * @return 结果
     */
    public int updateUserAddressByCustomerIdAndAddressId(UserAddresses userAddresses);

    /**
     * 根据用户ID和地址ID查询用户收货地址详情
     * 
     * @param customerId 用户ID
     * @param addressId 地址ID
     * @return 用户收货地址
     */
    public UserAddresses selectUserAddressByCustomerIdAndAddressId(String customerId, String addressId);

    /**
     * 根据用户ID和地址ID删除用户收货地址（软删除）
     * 
     * @param customerId 用户ID
     * @param addressId 地址ID
     * @return 结果
     */
    public int deleteUserAddressByCustomerIdAndAddressId(String customerId, String addressId);
}
